The term "booting" refers to a process of loading and executing programs, principally those making up an operating system, in order to prepare a computer system for use by a user. The booting process is said to be made up of a number of operations. As computers become more powerful and capacious and as operating systems continue to evolve, the number of operations invoked during the booting process increases. Additional operations whose invocation succeeds typically add useful functionality to the operating system by, for example, automatically identifying, configuring, and initializing hardware devices installed in the computer system. On the other hand, a significant number of these operations are susceptible to failure when invoked on computer systems having particular hardware or software configurations. When these operations fail during the booting process, they often prevent the booting process from completing, thus making the computer system unusable by the user.
Conventionally, when one of these operations fails during the booting process, a knowledgeable user may be able to diagnose and resolve the problem by identifying, via trial and error, the operation that is failing, then manually modifying the sequence of operations invoked during the booting process to exclude the identified operation. Where the user is capable of diagnosing and resolving the problem alone, the process is arduous and time-consuming. On the other hand, when the user is incapable of diagnosing and resolving the problem alone, the computer system generally remains unusable until the user can obtain assistance.
Accordingly, an automated system for identifying operations that fail during the booting process and reversibly preventing their invocation during future iterations of the booting process would have significant utility.